package com.sugon.service;

import com.sugon.entity.SysDeptEntity;

import java.util.List;
import java.util.Map;

/**
 * 部门管理
 *
 * @author liepngjun
 * @date 2017年11月18日 下午13:13:23
 */
public interface SysDeptService {

    SysDeptEntity queryObject(String deptId);

    List<SysDeptEntity> queryList(Map<String, Object> map);

    int save(SysDeptEntity sysDept);

    int update(SysDeptEntity sysDept);

    /**
     * 级联更新
     * @param sysDept
     */
    void cascadeUpdate(SysDeptEntity sysDept);

    int delete(String deptId);

    /**
     * 查询子部门ID列表
     *
     * @param parentId 上级部门ID
     */
    List<String> queryDetpIdList(String parentId);

    /**
     * 获取子部门ID(包含本部门ID)，用于数据过滤
     */
    String getSubDeptIdList(String deptId);

    List<String> getKey(String type);

    List<SysDeptEntity> queryListByType(String deptType, Integer level);

    List<SysDeptEntity> queryListByType2(String deptType);

    /**
     * 罗列出人员组织树
     *
     * @param param
     * @return
     */
    List<SysDeptEntity> listPersonOrganTree(Map<String, Object> param);

    /**
     * 获取
     *
     * @return
     */
    List<SysDeptEntity> treeDeptBySCX();

    /**
     * 获取指定组织level以上的部门列表
     *
     * @return
     */
    List<SysDeptEntity> treeDeptByLevel(Integer level);

    String getDeptTypeById(String deptId);

    String getPEdept(String deptType);

    /**
     * 获取铸造车间列表
     *
     * @return
     */
    List<SysDeptEntity> getZhuZCJ();

    /**
     * 根据DCode获取部门详情 by YXD
     *
     * @param dcode
     * @return
     */
    SysDeptEntity getByDCode(String dcode);

    /**
     * 根据部门名称获取完全匹配的部门列表
     *
     * @param dname
     * @return
     */
    List<SysDeptEntity> getByName(String dname);

    /**
     * 罗列出所有指定部门级别以下的设备组织列表
     *
     * @param deptLevel 部门级别
     * @return
     */
    List<SysDeptEntity> listDeviceOrganization(Integer deptLevel);

}
